﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;
using System.Data;

namespace WindowsFormsApplication3.Conexion
{
    public class GestionManager
    {
        Conexion conn = new Conexion();

        public void BDupdate(string sql)
        {
            try
            {
                conn.conectar();
                SqlCommand cmd = new SqlCommand(sql, conn.conector);
                SqlDataReader datareader = cmd.ExecuteReader();
                MessageBox.Show("Datos actualizados correctamente", "Operación exitosa", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (SqlException)
            {
                MessageBox.Show("No se pudo actualizar datos\nPuede deberse a un registro repetido", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            conn.desconectar();
        }

        public void BDInsert(string sql)
        {
            string msg = "";
            try
            {
                conn.conectar();
                SqlCommand cmd = new SqlCommand(sql, conn.conector);
                SqlDataReader datareader = cmd.ExecuteReader();
                msg = "Datos agregados correctamente";
            }
            catch (SqlException ex)
            {
                msg = "No se pudo agregar datos\n" + ex;
            }
            conn.desconectar();
        }
        public int RecuperarIDInventario()
        {
            Conexion conn = new Conexion();
            conn.conectar();

            string sql = "SELECT  MAX(idinventario) FROM inventario";
            SqlCommand cmd = new SqlCommand(sql, conn.conector);

            int id = Convert.ToInt32(cmd.ExecuteScalar());
            return id;

        }

        public string digitoVerificador(int rut)
        {
            int Digito;
            int Contador;
            int Multiplo;
            int Acumulador;
            string RutDigito;

            Contador = 2;
            Acumulador = 0;

            while (rut != 0)
            {
                Multiplo = (rut % 10) * Contador;
                Acumulador = Acumulador + Multiplo;
                rut = rut / 10;
                Contador = Contador + 1;
                if (Contador == 8)
                {
                    Contador = 2;
                }

            }

            Digito = 11 - (Acumulador % 11);
            RutDigito = Digito.ToString().Trim();
            if (Digito == 10)
            {
                RutDigito = "K";
            }
            if (Digito == 11)
            {
                RutDigito = "0";
            }
            return (RutDigito);
        }

        public string actualizarStock(Int64 cod, int stock)
        {
            Conexion conn = new Conexion();
            conn.conectar();
            string msg = "";
            try
            {
                //crear el objeto para realizar un update
                string sql = "update producto set stock='" + stock + "' where codProducto = " + cod;
                SqlCommand cmd = new SqlCommand(sql, conn.conector);
                cmd.ExecuteNonQuery();
                msg = "Stock Actualizado";
            }
            catch (SqlException ex)
            {
                msg = ex.Message;
            }
            conn.desconectar();
            return msg;
        }

        public int stock(Int64 codprod)
        {
            Conexion conn = new Conexion();
            conn.conectar();
            //string msg = "";

            string sql = "SELECT stock FROM producto WHERE codProducto=" + codprod;
            SqlCommand cmd = new SqlCommand(sql, conn.conector);
            //cmd.ExecuteNonQuery();
            int stock = Convert.ToInt32(cmd.ExecuteScalar());
            return stock;

            //conn.desconectar();
        }
        public Int64 codProd(string nombre)
        {
            Conexion conn = new Conexion();
            conn.conectar();
            //string msg = "";

            string sql = "SELECT codProducto FROM producto WHERE nombre='" + nombre +"'";
            SqlCommand cmd = new SqlCommand(sql, conn.conector);
            //cmd.ExecuteNonQuery();
            Int64 cod = Convert.ToInt64(cmd.ExecuteScalar());
            return cod;

            //conn.desconectar();
        }

        public DataSet buscarCBproductos()
        {
            conn.conectar();
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter("select nombre from producto where estado = 'Activo' order by nombre asc", conn.conector);
            da.Fill(ds, "cbproductos");
            conn.desconectar();
            return ds;
        }


        public DataSet getProd()
        {
            conn.conectar();
            DataSet ds = new DataSet();
            //consulta sin IDs  
            SqlDataAdapter da = new SqlDataAdapter("SELECT     producto.nombre, producto.detalle, producto.stock, categoria.nombre AS categoría, proveedor.nombre AS proveedor FROM producto INNER JOIN proveedor ON producto.ultProveedor = proveedor.rutproveedor AND producto.ultProveedor = proveedor.rutproveedor INNER JOIN categoria ON producto.idcategoria = categoria.idcategoria", conn.conector);
            //         SqlDataAdapter da = new SqlDataAdapter("select * from administrador", conn.conector);
            da.Fill(ds, "productos");
            conn.desconectar();
            return ds;
        }
    }
}
